
// Copyright 2018 Schibsted Marketplaces Products & Technology As
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.schibsted.spt.data.jslt.impl;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.schibsted.spt.data.jslt.JsltException;

public class LiteralExpression extends AbstractNode {
  private JsonNode value;

  public LiteralExpression(JsonNode value, Location location) {
    super(location);
    this.value = value;
  }

  public JsonNode apply(Scope scope, JsonNode input) {
    return value;
  }

  public void dump(int level) {
    System.out.println(NodeUtils.indent(level) + value);
  }

  public String toString() {
    try {
      return NodeUtils.mapper.writeValueAsString(value);
    } catch (JsonProcessingException e) {
      throw new JsltException("Couldn't serialize literal value: " + e);
    }
  }
}
